The background description provided herein is for the purpose of generally presenting the context of the disclosure. Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
A computing device may be characterized by its Instruction Set Architecture (ISA). Typically, a computing device may include Operating System (OS) services, and the OS services may include the runtime library services (LIB), developed for the ISA of the computing device, to facilitate application developers to develop applications to operate on the computing device. For example, various smartphones may be characterized by the use of the ARM processor and its ISA. These smartphones may include an OS, e.g., iOS or Android, in support of the various applications developed for the respective smartphones. Some computing devices offer an ISA-independent execution environment, such as Java™ or Android Application Framework. However, a large number of applications nonetheless include ISA dependent portions that invoke services of ISA-dependent runtime libraries. Further, these ISA dependent portions often include callback functions requiring callbacks from the ISA-dependent runtime libraries, and such callbacks are often not discovered until runtime, rendering traditional approaches, such as binary translation, inadequate in addressing the needs. Additionally, these ISA dependent portions may also include overriding implementations of inheritable virtual functions of the ISA-dependent runtime libraries that need to be properly called when the virtual functions are called. The traditional approaches, such as binary translation, are likewise inadequate in addressing the needs.